// Package convert 提供了一组转换函数，用于将uint类型的值转换为其他类型。
package convert

import (
	"errors"
	"math"
	"strconv"
)

// UintToInt 将uint类型的值转换为int类型，如果超出int范围则返回错误。
func UintToInt(value uint) (int, error) {
	if value > math.MaxInt {
		return 0, errors.New("overflow occurred during conversion")
	}
	return int(value), nil
}

// UintToInt8 将uint类型的值转换为int8类型，如果超出int8范围则返回错误。
func UintToInt8(value uint) (int8, error) {
	if value > math.MaxInt8 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return int8(value), nil
}

// UintToInt16 将uint类型的值转换为int16类型，如果超出int16范围则返回错误。
func UintToInt16(value uint) (int16, error) {
	if value > math.MaxInt16 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return int16(value), nil
}

// UintToInt32 将uint类型的值转换为int32类型，如果超出int32范围则返回错误。
func UintToInt32(value uint) (int32, error) {
	if value > math.MaxInt32 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return int32(value), nil
}

// UintToInt64 将uint类型的值转换为int64类型，如果超出int64范围则返回错误。
func UintToInt64(value uint) (int64, error) {
	if value > math.MaxInt64 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return int64(value), nil
}

// UintToUint8 将uint类型的值转换为uint8类型，如果超出uint8范围则返回错误。
func UintToUint8(value uint) (uint8, error) {
	if value > math.MaxUint8 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return uint8(value), nil
}

// UintToUint16 将uint类型的值转换为uint16类型，如果超出uint16范围则返回错误。
func UintToUint16(value uint) (uint16, error) {
	if value > math.MaxUint16 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return uint16(value), nil
}

// UintToUint32 将uint类型的值转换为uint32类型，如果超出uint32范围则返回错误。
func UintToUint32(value uint) (uint32, error) {
	if value > math.MaxUint32 {
		return 0, errors.New("overflow occurred during conversion")
	}
	return uint32(value), nil
}

// UintToUint64 将uint类型的值转换为uint64类型，不进行溢出检查。
func UintToUint64(value uint) (uint64, error) {
	return uint64(value), nil
}

// UintToFloat32 将uint类型的值转换为float32类型，不进行溢出检查。
func UintToFloat32(value uint) (float32, error) {
	return float32(value), nil
}

// UintToFloat64 将uint类型的值转换为float64类型，不进行溢出检查。
func UintToFloat64(value uint) (float64, error) {
	return float64(value), nil
}

// UintToString 将uint类型的值转换为字符串类型。
func UintToString(value uint) string {
	return strconv.FormatUint(uint64(value), 10)
}

// UintToBool 将uint类型的值转换为bool类型，非零值转换为true，零值转换为false。
func UintToBool(value uint) bool {
	return value != 0
}
